package main

import (
	"fmt"
	"net"
)

func main() {
	//在服务器中，0.0.0.0指的是本机上的所有IPV4地址，
	////如果一个主机有两个IP地址，192.168.1.1 和 10.1.2.1，并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务
	listen, err := net.ListenUDP("udp", &net.UDPAddr{
		IP:   net.IPv4(0, 0, 0, 0),
		Port: 8080,
		Zone: "",
	})
	if err != nil {
		fmt.Println("listen failed, err:", err)
		return
	}
	defer listen.Close()
	for {
		data := make([]byte, 1024)
		n, addr, err := listen.ReadFromUDP(data)
		if err != nil {
			fmt.Println("listen failed, err:", err)
			return
		}
		defer listen.Close()
		fmt.Printf("data %v addr:%v count%v\n", string(data[:n]), addr, n)
		_, err = listen.WriteToUDP(data[:n], addr)
		if err != nil {
			fmt.Println("write to udp failed, err:", err)
			continue
		}
	}
}
